package com.booksystem.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * <p>
 *   创建订单数据传输对象
 * </p>
 * @author 段伟豪
 */
@Data
@ApiModel(description = "创建订单请求参数")
public class CreateOrderDTO {

    /**
     * 用户ID
     */
    @NotNull(message = "用户ID不能为空")
    @ApiModelProperty(value = "用户ID")
    private Long userId;

    /**
     * 收货地址
     */
    @NotBlank(message = "收货地址不能为空")
    @ApiModelProperty(value = "收货地址")
    private String shippingAddress;

    /**
     * 商品项列表
     */
    @NotNull(message = "商品项列表不能为空")
    @Valid
    @ApiModelProperty(value = "商品项列表")
    private List<Item> items;

    /**
     * 支付方式
     */
    @NotBlank(message = "支付方式不能为空")
    @ApiModelProperty(value = "支付方式")
    private String paymentMethod;

    /**
     * 订单备注
     */
    @ApiModelProperty(value = "订单备注")
    private String remark;

    /**
     * 商品项内部类
     */
    @Data
    public static class Item {
        /**
         * 商品ID
         */
        @NotNull(message = "商品ID不能为空")
        @ApiModelProperty(value = "商品ID")
        private Long productId;

        /**
         * 数量
         */
        @NotNull(message = "购买数量不能为空")
        @ApiModelProperty(value = "购买数量")
        private Integer quantity;
    }
}